# -*- coding: utf8 -*-

__author__ = 'Fonny'


def pyahk_test():
	import time
	import json
	import ahk

	# 运行外部ahk脚本,并接收返回值
	ahk.start('py_test.ahk')

	while ahk.ready(True):
		ahkReStr = ahk.get('gv_re')
		# ahkReStr = str(ahk.get('gv_re')).decode('gbk')
		if not ahkReStr:
			print('wait %s' % (time.ctime()))
		else:
			break
		time.sleep(0.01)

	# 销毁ahk线程
	print('AHK result string original:\n%s' % (ahkReStr))
	ahk.terminate(2)
	print "AHK Tread terminated\n"

	# 处理传递进来的 gbk 双字节 unicode 内容,这一步不可省略.程序之间传递不同编码时必备

	# 用 'windows-1252' 或 'latin1' 都可以,但 'utf8', 'gb2312' 不行
	# s = ahkReStr.decode("unicode-escape").encode("gb2312").decode("gbk")
	# s = ahkReStr.decode("unicode-escape").encode("utf8").decode("gbk")

	# 解码字节流,见: http://python.jobbole.com/50345/
	# s = ahkReStr.decode("unicode-escape").encode("latin1").decode("gbk")
	s = ahkReStr.decode("unicode-escape").encode("windows-1252").decode("gbk")
	print 'Decode JsonString From AHK result:\n%s\n' % (s)


	# 解析ahk的返回Json文本为Json对象
	sj = json.loads(s)
	print 'After json.loads():\n%s' % (sj)
	print(type(sj))

	sjName = sj[0]['name']

	# Unicode类型只能和 Unicode类型合并
	print(sjName + u' 类型是:')
	print(type(sjName))

	# 用 Unicode 类型操作字符串的长度是正确的
	findStr = sjName.find(u'对象')
	print(findStr)


	# 用 str 类型操作字符串,长度不对,但是可以正确找到.
	sjNameEnc = sjName.encode('utf-8')

	# str 可以和 str 类型合并
	print(sjNameEnc + ' 类型是:')
	print(type(sjNameEnc))

	findStr = sjNameEnc.find('对象')
	print(findStr)

	if findStr > -1:
		print('测试中文字符查找: 成功')
	else:
		print('测试中文字符查找: 失败')


def main():
	pyahk_test()


if __name__ == '__main__':
	main()
